package com.sisgesbyte.services.sistema;

import java.util.ArrayList;
import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.inject.Inject;

import com.sisgesbyte.common.ConstantesInternasSistema;
import com.sisgesbyte.common.Validaciones;
import com.sisgesbyte.dao.beanDao.FiltrosSQLBean;
import com.sisgesbyte.dao.beanDao.RolTablaDetRequest;
import com.sisgesbyte.dao.seguridad.MantenimientoRolTablaDao;
import com.sisgesbyte.data.entity.comun.GenericEntity;
import com.sisgesbyte.data.entity.seguridad.RolTablaListaEntity;
import com.sisgesbyte.services.commonBean.GenericResponse;
import com.sisgesbyte.services.sistema.bean.RolTablaBean;
import com.sisgesbyte.services.sistema.bean.RolTablaListaResponse;

@Stateless
public class MantenimientoRolTablaImpl implements MantenimientoRolTabla {

	@EJB
	private MantenimientoRolTablaDao mantenimientoRolTablaDao;
	
	@Inject
	private Validaciones validaciones;
	
	@Override
	public RolTablaListaResponse listarRolTabla(String codTransaccion,FiltrosSQLBean cadenaFiltros) {
		
		RolTablaListaResponse response = new RolTablaListaResponse();
		
		try{
			response.setIdTransaccion(codTransaccion);
			List<RolTablaListaEntity> rolTabla = null;
			try{
				rolTabla = mantenimientoRolTablaDao.listaRolTabla(cadenaFiltros);
				
			}catch(Exception e){
				System.out.println("Ocurrio un error al Obtener lista de BD " + e);
				response.setCodigoRespuesta(ConstantesInternasSistema.LISTAR_ROLTABLA_COD_IDT26);
				response.setMensajeRespuesta(ConstantesInternasSistema.LISTAR_ROLTABLA_MSJ_IDT26);
			}
			
			if(rolTabla.size() > 0){
				List<RolTablaBean> lista = new ArrayList<RolTablaBean>();
				for(RolTablaListaEntity row : rolTabla){
					RolTablaBean bean = new RolTablaBean();
					bean.setActive(row.getActive());
					bean.setActualizar(row.getActualizar());
					bean.setCodId(row.getId());
					bean.setCodRolId(row.getRol_id());
					bean.setCodTabla(row.getCod_tabla());
					bean.setEliminar(row.getEliminar());
					bean.setRol(validaciones.validarCamposString(row.getRol()));
					bean.setTabla(validaciones.validarCamposString(row.getTabla()));
					bean.setVer(row.getVer());
					lista.add(bean);
				}
				
				response.setListaRolTabla(lista);
				response.setCodigoRespuesta(ConstantesInternasSistema.CODIGO_EXITO);
				response.setMensajeRespuesta(ConstantesInternasSistema.MENSAJE_EXITO);
			}else{
				response.setCodigoRespuesta(ConstantesInternasSistema.LISTAR_ROLTABLA_COD_IDF25);
				response.setMensajeRespuesta(ConstantesInternasSistema.LISTAR_ROLTABLA_MSJ_IDF25);
			}
			
		}catch(Exception e){
			System.out.println("Ocurrio un error en el proceso " +e);
			response.setCodigoRespuesta(ConstantesInternasSistema.LISTAR_ROLTABLA_COD_IDT26);
			response.setMensajeRespuesta(ConstantesInternasSistema.LISTAR_ROLTABLA_MSJ_IDT26);
			
		}
		return response;
	}

	@Override
	public GenericResponse nuevoRolTabla(String codTransaccion, RolTablaBean rolTabla) {
		
		GenericResponse response = new GenericResponse();
		try{
			GenericEntity newRolTabla = null; 
			response.setIdTransaccion(codTransaccion);
			
			RolTablaDetRequest  req = new RolTablaDetRequest();
			req.setActive(rolTabla.getActive());
			req.setActualizar(rolTabla.getActualizar());
			req.setCodRol(rolTabla.getCodRolId());
			req.setCodTabla(rolTabla.getCodTabla());
			req.setEliminar(rolTabla.getEliminar());
			req.setVer(rolTabla.getVer());
			
			try{
				newRolTabla = mantenimientoRolTablaDao.guardarRolTabla(req);
			}catch(Exception e){
				System.out.println("Ocurrio un error al Registrar en BD " + e);
				response.setCodigoRespuesta(ConstantesInternasSistema.NUEVO_ROLTABLA_COD_IDT27);
				response.setCodigoRespuesta(ConstantesInternasSistema.NUEVO_ROLTABLA_MSJ_IDT27);
			}
			
			if(newRolTabla.getCod_error() == Integer.valueOf(ConstantesInternasSistema.CODIGO_EXITO)){
				response.setCodigoRespuesta(ConstantesInternasSistema.CODIGO_EXITO);
				response.setMensajeRespuesta(ConstantesInternasSistema.MENSAJE_EXITO);
			}else{
				response.setCodigoRespuesta(ConstantesInternasSistema.NUEVO_ROLTABLA_COD_IDF26);
				response.setMensajeRespuesta(ConstantesInternasSistema.NUEVO_ROLTABLA_MSJ_IDF26);
			}
		}catch(Exception e){
			System.out.println("Ocurrio un error en el proceso nuevoRolTabla " + e);
			response.setCodigoRespuesta(ConstantesInternasSistema.NUEVO_ROLTABLA_COD_IDT27);
			response.setCodigoRespuesta(ConstantesInternasSistema.NUEVO_ROLTABLA_MSJ_IDT27);

		}
		return response;
	}

	@Override
	public GenericResponse editRolTabla(String codTransaccion, RolTablaBean rolTabla) {
		
		GenericResponse response = new GenericResponse();
		try{
			GenericEntity editRolTabla = null; 
			
			RolTablaDetRequest  req = new RolTablaDetRequest();
			req.setCodRolTabla(rolTabla.getCodId());
			req.setActive(rolTabla.getActive());
			req.setActualizar(rolTabla.getActualizar());
			req.setCodRol(rolTabla.getCodRolId());
			req.setCodTabla(rolTabla.getCodTabla());
			req.setEliminar(rolTabla.getEliminar());
			req.setVer(rolTabla.getVer());
			
			try{
				editRolTabla = mantenimientoRolTablaDao.actualizarRolTabla(req);
			}catch(Exception e){
				System.out.println("Ocurrio un error al Editar en  BD " + e);
				response.setCodigoRespuesta(ConstantesInternasSistema.EDIT_ROLTABLA_COD_IDT28);
				response.setMensajeRespuesta(ConstantesInternasSistema.EDIT_ROLTABLA_MSJ_IDT28);
			}
			
			if(editRolTabla.getCod_error() == Integer.valueOf(ConstantesInternasSistema.CODIGO_EXITO)){
				response.setCodigoRespuesta(ConstantesInternasSistema.CODIGO_EXITO);
				response.setMensajeRespuesta(ConstantesInternasSistema.MENSAJE_EXITO);
			}else{
				response.setCodigoRespuesta(ConstantesInternasSistema.EDIT_ROLTABLA_COD_IDF27);
				response.setMensajeRespuesta(ConstantesInternasSistema.EDIT_ROLTABLA_MSJ_IDF27);
			}
			
		}catch(Exception e){
			System.out.println("Ocurrio un error en el proceso editRolTabla " + e);
			response.setCodigoRespuesta(ConstantesInternasSistema.EDIT_ROLTABLA_COD_IDT28);
			response.setMensajeRespuesta(ConstantesInternasSistema.EDIT_ROLTABLA_MSJ_IDT28);
		}
		return response;
	}

	@Override
	public GenericResponse deleteRolTabla(String codTransaccion, int codigo) {
		
		GenericResponse response = new GenericResponse();
		
		try{
			response.setIdTransaccion(codTransaccion);
			GenericEntity deleteRolTabla = mantenimientoRolTablaDao.eliminarRolTabla(codigo);
			
			if(deleteRolTabla.getCod_error() == Integer.valueOf(ConstantesInternasSistema.CODIGO_EXITO)){
				response.setCodigoRespuesta(ConstantesInternasSistema.CODIGO_EXITO);
				response.setMensajeRespuesta(ConstantesInternasSistema.MENSAJE_EXITO);
			}else{
				response.setCodigoRespuesta(ConstantesInternasSistema.DELETE_ROLTABLA_COD_IDF28);
				response.setMensajeRespuesta(ConstantesInternasSistema.DELETE_ROLTABLA_MSJ_IDF28);
			}
		}catch(Exception e){
			System.out.println("ocurrio un error al Eliminar de la BD " + e);
			response.setCodigoRespuesta(ConstantesInternasSistema.DELETE_ROLTABLA_COD_IDT29);
			response.setMensajeRespuesta(ConstantesInternasSistema.DELETE_ROLTABLA_MSJ_IDT29);
		}
		
		return response;
	}

}
